// @ts-nocheck

// #ifdef APP-IOS || APP-ANDROID
import { isNumber } from '../isNumber'
import { isString } from '../isString'
import { isDef } from '../isDef'
// #endif

/**
 * 获取对象的类名字符串
 * @param obj - 需要处理的对象
 * @returns 由对象属性作为类名组成的字符串
 */
export function getClassStr<T>(obj: T): string {
  let classNames: string[] = []
  // #ifdef APP-IOS || APP-ANDROID
  if (obj instanceof UTSJSONObject) {
    ;(obj as UTSJSONObject).toMap().forEach((value, key) => {
      if (isDef(value)) {
        if (isNumber(value)) {
          classNames.push(key)
        }
        if (isString(value) && value !== '') {
          classNames.push(key)
        }
        if (typeof value == 'boolean' && (value as boolean)) {
          classNames.push(key)
        }
      }
    })
  }
  // #endif
  // #ifndef APP-IOS || APP-ANDROID
  // 遍历对象的属性
  for (let key in obj) {
    // 检查属性确实属于对象自身且其值为true
    if ((obj as any).hasOwnProperty(key) && obj[key]) {
      // 将属性名添加到类名数组中
      classNames.push(key)
    }
  }
  // #endif

  // 将类名数组用空格连接成字符串并返回
  return classNames.join(' ')
}

// 示例
// const obj = { foo: true, bar: false, baz: true };
// const classNameStr = getClassStr(obj);
// console.log(classNameStr); // 输出: "foo baz"
